void __attribute__((naked,noinline)) init_file_modules_task(){
 asm volatile(
                "STMFD   SP!, {R4,LR}\n"
                "BL      _Unmount_FileSystem\n" // + 
                "BL      sub_FFB37368\n"
                "SUBS    R4, R0, #0\n"
                "MOV     R0, #0x5000\n"
                "MOV     R1, #0\n"
                "ADD     R0, R0, #6\n"
                "BEQ     loc_FF9BD42C\n"
                "BL      sub_FF98B0C4\n"
"loc_FF9BD42C:\n"
                "BL      sub_FFB373E0_my\n"  //------------->
                "MOV     R0, #0x5000\n"
                "CMP     R4, #0\n"
                "MOV     R1, R4\n"
                "ADD     R0, R0, #6\n"
                "LDMNEFD SP!, {R4,PC}\n"
                "LDMFD   SP!, {R4,LR}\n"
                "B       sub_FF98B0C4\n"
 );
}

void __attribute__((naked,noinline)) sub_FFB373E0_my(){
 asm volatile(
                "STMFD   SP!, {R4,LR}\n"
                "LDR     R4, =0xB99C\n"
                "BL      Mount_FileSystem_my\n"  //------------------->
                "LDR     R3, [R4]\n"
                "CMP     R3, #0\n"
                "MOV     R0, #0\n"
                "BEQ     loc_FFB37404\n"
                "BL      sub_FF86E6E4\n"
                "LDR     R3, [R4]\n"
"loc_FFB37404:\n"
                "CMP     R3, #0\n"
                "BNE     loc_FFB37430\n"
                "BL      sub_FF9E6838\n"
                "AND     R0, R0, #0xFF\n"
                "BL      sub_FF834454\n"
                "BL      sub_FF9E6838\n"
                "AND     R0, R0, #0xFF\n"
                "BL      sub_FF864E7C\n"
                "BL      sub_FF9E6848\n"
                "AND     R0, R0, #0xFF\n"
                "BL      sub_FF834528\n"
"loc_FFB37430:\n"
                "LDR     R2, =0xB998\n"
                "MOV     R3, #1\n"
                "STR     R3, [R2]\n"
                "LDMFD   SP!, {R4,PC}\n"
 );
}

void __attribute__((naked,noinline)) Mount_FileSystem_my(){
 asm volatile(
                "STMFD   SP!, {R4-R6,LR}\n"
                "MOV     R5, #0\n"
                "LDR     R6, =0x2BFF8\n"
                "MOV     R0, R5\n"
                "BL      sub_FF86FBC8\n"
                "LDR     R0, [R6,#0x38]\n"
                "BL      sub_FF86F2B8\n"
                "SUBS    R1, R0, #0\n"
                "MOV     R0, R5\n"
                "BNE     loc_FF8701D0\n"
                "LDR     R3, =0x2A28\n"
                "LDR     R2, =0x2A20\n"
                "STR     R1, [R3]\n"
                "LDR     R3, =0x2A24\n"
                "STR     R1, [R2]\n"
                "STR     R1, [R3]\n"
"loc_FF8701D0:\n"
                "BL      sub_FF86FC18\n"
                "MOV     R0, R5\n"
                "BL      sub_FF86FF40_my\n"  //----------------------->
                "MOV     R4, R0\n"
                "MOV     R0, R5\n"
                "BL      sub_FF86FFC8\n"
                "AND     R4, R4, R0\n"
                "MOV     R2, R4\n"
                "MOV     R0, R6\n"
                "LDR     R1, [R6,#0x3C]\n"
                "BL      sub_FF870140\n"
                "LDR     R2, =0x2A10\n"
                "MOV     R3, #1\n"
                "STR     R0, [R6,#0x40]\n"
                "STR     R3, [R2]\n"
                "LDMFD   SP!, {R4-R6,PC}\n"
 );
}

void __attribute__((naked,noinline)) sub_FF86FF40_my(){
 asm volatile(
                "STMFD   SP!, {R4-R7,LR}\n"
                "LDR     R7, =0x2A24\n"
                "LDR     R3, [R7]\n"
                "MOV     R4, R0\n"
                "CMP     R3, #0\n"
                "ADD     R3, R4, R4,LSL#1\n"
                "RSB     R3, R4, R3,LSL#3\n"
                "LDR     R6, =0x2C030\n"
                "MOV     R5, R3,LSL#2\n"
                "MOV     R1, R4\n"
                "BNE     loc_FF86FFB4\n"
                "LDR     R0, [R6,R5]\n"
                "BL      sub_FF86FCD4_my\n"     //----------------------------->
                "SUBS    R3, R0, #0\n"
                "MOV     R1, R4\n"
                "BEQ     loc_FF86FF8C\n"
                "LDR     R0, [R6,R5]\n"
                "BL      sub_FF86FE24\n"
                "MOV     R3, R0\n"
"loc_FF86FF8C:\n"
                "CMP     R3, #0\n"
                "MOV     R0, R4\n"
                "BEQ     loc_FF86FFA0\n"
                "BL      sub_FF86F390\n"
                "MOV     R3, R0\n"
"loc_FF86FFA0:\n"
                "CMP     R3, #0\n"
                "MOV     R0, R3\n"
                "MOVNE   R3, #1\n"
                "STRNE   R3, [R7]\n"
                "LDMFD   SP!, {R4-R7,PC}\n"
"loc_FF86FFB4:\n"
                "MOV     R0, #1\n"
                "LDMFD   SP!, {R4-R7,PC}\n"


 );
}

void __attribute__((naked,noinline)) sub_FF86FCD4_my(){
 asm volatile(
                "STMFD   SP!, {R4-R8,LR}\n"
                "MOV     R5, R1\n"
                "MOV     R8, R5,LSL#1\n"
                "ADD     R3, R8, R5\n"
                "LDR     R2, =0x2C034\n"
                "SUB     SP, SP, #8\n"
                "RSB     R3, R5, R3,LSL#3\n"
                "LDR     R1, [R2,R3,LSL#2]\n"
                "MOV     R6, #0\n"
                "STR     R6, [SP]\n"
                "MOV     R7, R0\n"
                "STR     R6, [SP,#4]\n"
                "CMP     R1, #5\n"
                "LDRLS   PC, [PC,R1,LSL#2]\n"
                "B       loc_FF86FDD0\n"
                ".long loc_FF86FD74\n"
                ".long loc_FF86FD28\n"
                ".long loc_FF86FD28\n"
                ".long loc_FF86FD28\n"
                ".long loc_FF86FD28\n"
                ".long loc_FF86FDC0\n"
"loc_FF86FD28:\n"
                "MOV     R0, #3\n"
                "MOV     R1, #0x200\n"
                "MOV     R2, #0\n"
                "BL      sub_FF81282C\n"
                "SUBS    R6, R0, #0\n"
                "BEQ     loc_FF86FE08\n"
                "ADD     R12, R8, R5\n"
                "RSB     R12, R5, R12,LSL#3\n"
                "LDR     R4, =0x2C044\n"
                "MOV     R0, R7\n"
                "MOV     R1, #0\n"
                "MOV     R2, #1\n"
                "MOV     R3, R6\n"
                "MOV     LR, PC\n"
                "LDR     PC, [R4,R12,LSL#2]\n"
                "CMP     R0, #1\n"
                "BNE     loc_FF86FD7C\n"
                "MOV     R0, #3\n"
                "BL      sub_FF8128FC\n"
"loc_FF86FD74:\n"
                "MOV     R0, #0\n"
                "B       loc_FF86FE08\n"
"loc_FF86FD7C:\n"
                "MOV     R0, R7\n"
                "BL      sub_FF88034C\n"
                "MOV     R1, R0\n"
                "ADD     R2, SP, #4\n"
                "MOV     R3, SP\n"
                "MOV     R0, R6\n"

                "STMFD   SP!, {R4-R11,LR}\n" // +
                "BL      mbr_read\n"    //-----------> 
                "LDMFD   SP!, {R4-R11,LR}\n" // +

          //    "BL      sub_FF86F494\n"   // original function
                "MOV     R4, R0\n"
                "MOV     R0, #3\n"
                "BL      sub_FF8128FC\n"
                "CMP     R4, #0\n"
                "BNE     loc_FF86FDE0\n"
                "MOV     R0, R7\n"
                "STR     R4, [SP,#4]\n"
                "BL      sub_FF88034C\n"
                "STR     R0, [SP]\n"
                "B       loc_FF86FDE0\n"
"loc_FF86FDC0:\n"
                "MOV     R3, #0\n"
                "MOV     R2, #0x40\n"
                "STMEA   SP, {R2,R3}\n"
                "B       loc_FF86FDE0\n"
"loc_FF86FDD0:\n"
                "MOV     R1, #0x28C\n"
                "LDR     R0, =0xFF86FAA0\n"
                "ADD     R1, R1, #1\n"
                "BL      sub_FF813B80\n"
"loc_FF86FDE0:\n"
                "LDR     R2, =0x2BFF8\n"
                "ADD     R3, R8, R5\n"
                "LDMFD   SP, {R0,R12}\n"
                "RSB     R3, R5, R3,LSL#3\n"
                "MOV     R3, R3,LSL#2\n"
                "ADD     R1, R2, #0x48\n"
                "ADD     R2, R2, #0x44\n"
                "STR     R0, [R1,R3]\n"
                "STR     R12, [R2,R3]\n"
                "MOV     R0, #1\n"
"loc_FF86FE08:\n"
                "ADD     SP, SP, #8\n"
                "LDMFD   SP!, {R4-R8,PC}\n"
 );
}
